
10 REM The Secret of the 3 Castles
15 REM Aquarius 16K
20 CLEAR 125
30 GOSUB 20000:REM init
40 GOSUB 2000:REM command
50 IF cm=11 THEN 200
55 IF cm>11 THEN GOSUB 500:GOTO 40
60 ON cm GOSUB 3000,3000,3000,3000,4000,5000,6000,7000,8000,9000
70 IF bo=1 THEN PRINT"You are in the boat"
80 GOSUB 10000:REM Counter actions
90 IF os(25,1)=60 AND os(26,1)=60 AND os(28,1)=60 THEN 120
100 IF kr>0 AND do=0 THEN 40
110 ON do+1 GOTO 180,130,140,150,160,170
120 PRINT"You have completed your quest!!!":GOTO 190
130 PRINT"You collapsed into the ravine":GOTO 190
140 PRINT"The boat turns!":GOTO 160
150 PRINT"The rope breaks!"
160 PRINT"You're drowning in the river":GOTO 190
170 PRINT"You soccumb to your wounds":GOTO 190
180 PRINT"Totally exchausted you collapse"
190 PRINT"This is the end of your adventure!!!"
200 PRINT:PRINT:PRINT "Restart (y/n) ?";
210 A$=INKEY$:IF LEN(A$)=0 THEN 210
220 IF A$="Y" OR A$="y" THEN RESTORE:GOSUB20010:GOTO40
230 END

240 REM Choose
250 FOR t=1 TO rm:PRINT t;" - ";N$(VW(t,r)):NEXT t
260 PRINT "Choise --> ";
270 A$=INKEY$:IF LEN(A$)=0 THEN 270
280 v=VAL(A$):IF v<1 OR v>rm THEN 270
290 PRINT A$: v=VW(v,r)
300 RETURN

499 REM Help
500 PRINT "Available commands:"
510 FOR t=1 TO 13:PRINT" - ";K$(t):NEXT t
520 IF CM=13 THEN 670
530 PRINT:PRINT "Do you want a hint (y/n) ?";
540 A$=INKEY$:IF LEN(A$)=0 THEN 540
550 IF NOT ( A$="Y" OR A$="y" ) THEN 670
560 PRINT "Yes";
570 T=INT(RND(1)*14)
580 RESTORE25000
590 FOR I = 0 TO T:READ HT$:PRINT".";:NEXT
600 H2$=""
610 FORI=LEN(HT$)TO1STEP-1
620 A=ASC(MID$(HT$,I,1))
630 IFA>96THENA=96+(27-(A-96))
640 H2$=h2$+CHR$(A):PRINT".";
650 NEXTI
660 PRINT:PRINT:PRINT H2$
670 RETURN

999 REM objects
1000 OB=0:MO=0:GW=0:PT=1
1010 FOR i=11 TO 33
1020 IF os(i,1)=PL THEN ob=ob+1:vw(OB,1)=i:GOTO 1060
1030 IF os(i,1)<>0 THEN 1060
1040 MO=MO+1:vw(MO,2)=i
1050 GW=GW+os(i,2)
1060 NEXT i
1070 IF GW>0 THEN PT=GW
1080 IF KW=1 THEN PT=2
1090 IF LG=1 AND PL=26 THEN i=19:GOTO 1140
1100 IF PG=1 AND PL=6 THEN i=21:GOTO 1140
1110 IF T1=1 AND PL=9 THEN i=30:GOTO 1140
1120 IF T2=1 AND PL=16 THEN i=30:GOTO 1140
1130 RETURN
1140 OB=OB+1:vw(OB,1)=i
1150 RETURN

1999 REM command
2000 PRINT:PRINT "Command --> ";
2010 A$=INKEY$:IF LEN(A$)=0 THEN 2010
2020 IF ASC(A$)>64 AND ASC(A$)<91 THEN A$=CHR$(ASC(A$)+32)
2030 CM=0
2040 FOR i=1 TO 13
2050 IF A$=LEFT$(K$(i),1) THEN CM=i
2060 NEXT i
2070 IF CM=0 THEN PRINT A$:PRINT"Don't understand your command":GOTO2000
2080 PRINT K$(CM)
2090 RETURN

2999 REM movement
3000 PO=PL:SU=0:BO=0
3010 PN=KV(PL,CM):IF PN=0 THEN 3040
3020 IF PN<100 THEN PL=PN:GOTO 3040
3030 ON PN-100 GOSUB 3200,3200,3300,3400,3500,3500,3600,3600
3033 IF PN<108 THEN 3040
3036 ON PN-108 GOSUB 3700,3700,3800,3900
3040 IF PL=5 OR PL=17 OR PL=27 OR PL=28 OR PL=63 THEN BO=1
3050 FOR i=1 TO 10
3060 IF OS(i,1)=PL THEN SU=i:i=10
3070 NEXT i
3080 IF PO=PL THEN PRINT"You can't go there":RETURN
3090 PRINT "You are going ";K$(cm)
3100 KR=KR-PT:GOSUB 1000
3110 RETURN
3200 IF PL=49 THEN PL=6:GOTO 3220
3210 PL=49
3220 IF PG=0 OR GW>1 THEN DO=1
3230 RETURN
3300 IF VG=15 THEN KV(21,3)=10:PL=10
3310 RETURN
3400 IF VG=20 THEN KV(39,3)=20:PL=20
3410 RETURN
3500 IF LG=0 THEN RETURN
3510 IF PL=50 THEN PL=26:RETURN
3520 PL=50
3530 RETURN
3600 IF PL=42 THEN PL=9:GOTO 3620
3610 PL=42
3620 IF T1=0 THEN DO=4:RETURN
3630 IF GW>6 THEN DO=3
3640 RETURN
3700 IF T2=0 THEN RETURN
3710 IF PL=29 THEN PL=16:RETURN
3720 PL=29
3730 RETURN
3800 DO=2:PL=0:RETURN
3900 IF RND(1)<.5 THEN RETURN
3910 PL=39
3920 RETURN

3999 REM attack
4000 IF su=0 THEN PRINT "Nothing to attack here":RETURN
4010 PRINT"You are attacking your opponent"
4020 KR=KR-AP
4030 ON su GOTO 4040,4040,4040,4060,4080,4100,4110,4130,4130,4130
4040 IF VG-30=su THEN 4150:REM guards
4050 GOTO 4180
4060 IF VG>30 OR VG=15 THEN 4150:REM snake
4070 GOTO 4180
4080 IF VG<>14 OR os(12,1)<>0 THEN 4180:REM bird at 58
4090 os(12,1)=52:GOSUB 1000:GOTO 4150
4100 GOTO 4180:REM bird at 9
4110 IF VG=17 THEN 4150:REM watermonster
4120 GOTO 4180
4130 IF VG>30 THEN 4150:REM monsters
4140 GOTO 4180
4150 PRINT"Your opponent runs away"
4160 os(su,1)=52:su=0
4170 RETURN
4180 PRINT"Your attack has barely success"
4190 RETURN

4999 REM use object
5000 VG=0
5010 IF MO=0 THEN PRINT"You have nothing to use":RETURN
5020 IF MO=1 THEN V=VW(1,2):GOTO 5040
5030 PRINT"Which object would you like to use:":RM=MO:R=2:GOSUB 250
5040 TK=9:IF V=22 THEN KW=1:TK=21:GOTO 5130
5050 IF V=29 THEN KR=KR+MK:MK=0:os(29,2)=1:GOTO 5130
5060 IF V=21 AND (PL=49 OR PL=6) THEN PG=1:os(V,1)=49:GOTO 5120
5070 IF V=19 AND (PL=50 OR PL=26) THEN LG=1:os(V,1)=50:GOTO 5120
5080 IF V=30 AND (PL=42 OR PL=9) THEN T1=1:os(V,1)=42:GOTO 5120
5090 IF V=30 AND (PL=29 OR PL=16) THEN T2=1:os(V,1)=29:GOTO 5120
5100 IF V=17 AND PL=41 THEN FG=1
5110 VG=V:GOTO 5130
5120 GOSUB 1000
5130 PRINT"You are using the object"
5140 RETURN

5999 REM inventory
6000 PRINT "Power = ";KR
6010 IF MO=0 THEN PRINT"You have nothing on you.":RETURN
6020 PRINT"You have with you:"
6030 FOR t = 1 TO MO:PRINT" - ";N$(VW(T,2)):NEXT t
6040 RETURN

6999 REM look
7000 PRINT"You are at ";PL
7010 IF SU=0 AND OB=0 THEN PRINT"There is nothing special here":RETURN
7020 PRINT"You can see:"
7030 IF ob=0 THEN 7050
7040 FOR t=1 TO ob:PRINT" - ";N$(VW(t,1)):NEXT t
7050 IF su<>0 THEN PRINT" - ";N$(su)
7060 RETURN

7999 REM put down object
8000 IF ob>3 OR bo=1 THEN PRINT"There is no space":RETURN
8010 IF MO=0 THEN PRINT"You have nothing on you.":RETURN
8020 IF MO=1 THEN V=VW(1,2):GOTO 8040
8030 PRINT"Which object would you put down:":RM=MO:R=2:GOSUB 250
8040 os(V,1)=PL
8050 IF v=22 THEN FOR t=1 TO mo:os(VW(t,2),1)=PL:NEXT t
8060 IF VG=v THEN VG=0
8070 PRINT"You put down the object"
8080 GOSUB 1000
8090 RETURN

8999 REM pick up (grab) object
9000 IF ob=0 THEN PRINT"Nothing to grab":RETURN
9010 IF ob=1 THEN v=VW(1,1):GOTO 9030
9020 PRINT"Which object to grab:":RM=ob:R=1:GOSUB250
9030 IF os(v,2)+GW>TK THEN PRINT"You are unable to lift this":RETURN
9040 PRINT"You grab the object"
9050 IF v=19 THEN LG=0
9060 IF v=21 THEN PG=0
9070 IF v=30 THEN t1=0:t2=0
9080 os(v,1)=0:GOSUB 1000
9090 RETURN

9999 REM counter actions
10000 IF BO=1 AND GW>20 THEN DO=2:RETURN
10010 IF SU=0 THEN 10090
10020 IF PL<>SP THEN SP=PL:GOTO 10090
10030 IF (SU=5 OR SU=6) AND MO>0 THEN 10140
10040 IF SU=7 AND VG=17 THEN RETURN
10050 PRINT"You are under attack!"
10060 KR=KR-os(SU,2):IF KR<0 THEN DO=5
10070 IF SU=7 THEN DO=2
10080 RETURN
10090 IF FG<>1 OR os(24,1)=52 OR PL<>41 THEN 10130
10100 os(24,1)=52:os(28,1)=41
10110 GOSUB 1000:FG=0
10120 PRINT"An infernal fire arises!"
10130 RETURN
10140 os(VW(1,2),1)=33
10150 IF VG=VW(1,2) THEN VG=0
10160 PRINT"Something is stolen!"
10170 SP=0:GOSUB 1000
10180 RETURN

19999 REM initialisation
20000 DIM K$(13),N$(33),os(33,2),KV(66,4),vw(15,2)
20010 ?CHR$(11);"One moment, please...."
20020 KR=1500:REM Power player
20030 PL=59:SP=PL:REM Starting place
20040 DO=0:REM Cause of death
20050 MK=100:AP=15:TK=9:PT=1:SU=0
20060 FOR t=1 TO 13:READ K$(t):NEXT t
20070 FOR t=1 TO 66:FOR u=1 TO 4:READ KV(t,u):NEXT u:NEXT t
20080 FOR t=1 TO 33:READ os(t,1), os(t,2), N$(t): NEXT t
20090 ?CHR$(11):PRINT"THE SECRET OF THE THREE CASTLES":PRINT:PRINT
20100 PG=0:LG=0:T1=0:T2=0:FG=0
20110 GOSUB 1000:GOSUB 7000
20120 RETURN

21000 DATA north,south,east,west,attack,use
21005 DATA inventory,look,put,get,restart,help,?
21010 DATA 0,39,32,30,0,45,0,0
21020 DATA 0,62,65,0,14,0,29,41
21030 DATA 63,17,0,0,0,102,0,23
21040 DATA 0,0,0,24,0,66,34,0
21050 DATA 0,0,66,108,0,0,0,21
21060 DATA 0,0,23,40,48,55,0,46
21070 DATA 62,54,56,0,34,4,31,66
21080 DATA 28,0,57,0,0,0,29,110
21090 DATA 5,28,0,0,56,0,59,54
21100 DATA 0,38,0,43,0,0,0,39
21110 DATA 53,43,103,0,30,0,39,0
21120 DATA 33,0,6,11,0,30,7,0
21130 DATA 0,31,0,34,0,0,0,106
21140 DATA 111,63,111,111,17,15,0,0
21150 DATA 31,0,109,4,24,22,1,0
21160 DATA 25,29,0,14,50,0,0,1
21170 DATA 35,23,0,0,0,14,25,8
21180 DATA 37,33,42,0,45,0,0,47
21190 DATA 0,35,63,0,19,0,0,0
21200 DATA 1,51,104,22,51,53,11,0
21210 DATA 0,0,4,0,0,0,107,35
21220 DATA 21,0,19,45,65,56,46,62
21230 DATA 2,36,43,0,58,61,12,44
21240 DATA 0,0,36,0,0,12,0,58
21250 DATA 101,58,0,0,0,32,105,0
21260 DATA 112,40,0,0,0,0,0,0
21270 DATA 40,21,0,0,13,0,18,0
21280 DATA 12,64,0,61,44,18,61,13
21290 DATA 60,0,0,15,49,46,48,65
21300 DATA 61,0,64,18,0,57,0,0
21310 DATA 46,59,55,56,3,13,44,0
21320 DATA 27,5,0,37,55,0,0,59
21330 DATA 0,44,58,3,8,0,14,9
21340 DATA 43,25,guard,50,25,guard
21350 DATA 34,25,guard,46,35,snake
21360 DATA 58,5,bird,9,5,bird
21370 DATA 17,40,watermonster,24,50,monster
21380 DATA 4,50,monster,45,50,monster
21390 DATA 62,1,red arrow,62,1,green arrow
21400 DATA 62,1,blue arrow,12,5,bow
21410 DATA 64,4,ax,19,5,chain
21420 DATA 16,1,torch,54,6,stone
21430 DATA 3,5,stairs,48,2,key
21440 DATA 55,3,plank,10,9,wheelbarrow
21450 DATA 32,3,bottle,41,10,straw bale
21460 DATA 2,10,bronze statue,26,3,wooden statue
21470 DATA 30,12,lead statue,52,7,silver statue
21480 DATA 7,3,medicine,39,3,rope
21490 DATA 20,7,sword,8,6,dagger
21500 DATA 38,6,wide sword
25000DATA hzviz dvm lg hhvxxz hvert vxzok gstri vsg gz gxvqyl gstri vsg
25100DATA mlkzvd gstri vsg sgrd bzdz wvizxh vy mzx vifgzvix bivev
25200DATA gxvqyl bezvs gilkhmzig lg dliizyovvsd vsg vhf
25300DATA sgtmvigh ozmlrgrwwz vert oord vmrxrwvn vsg
25400DATA vmrezi vsg hhlix lg pmzok vsg vhf
25500DATA hgxvqyl bezvs biizx lg wiry vsg vhf
25600DATA 34 gz wizft vsg uul gstru lg wildh vsg vhf
25700DATA sxilg vsg tmrhf ivghmlnivgzd vsg ovkcv
25800DATA iveri vsg hhlix lg vkli vsg vhf
25900DATA mlrgfolh vsg lg vfox z hvert hmlrgkrixhmr vsg
26000DATA vcz vsg sgrd 12 gz illw vsg vxilu
26100DATA bvp vsg sgrd 93 gz illw vsg mvkl
26200DATA vkli vsg yzit lg gxvqyl ivsglmz sgrd 9 gz wiry vsg vervxvw
26300DATA ivttzw vsg tmrhf 05 gz wizft vsg oorp

